﻿
// 获取当前日期时间
var now = new Date();
var year = now.getFullYear();
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var day = ("0" + now.getDate()).slice(-2);
var hours = ("0" + now.getHours()).slice(-2);
var minutes = ("0" + now.getMinutes()).slice(-2);
var seconds = ("0" + now.getSeconds()).slice(-2);
var serialNumber = year + month + day + hours + minutes + seconds;
var inputElement = document.getElementById('checkNo');
inputElement.value = serialNumber;
console.log(inputElement.value)

var checkAll;
var checkpll;
var Show;
var Fenye;
var close;
var idsArray = [];
var tidsArray = [];

$(function () {
    getDropdownOptions()
})

//库位名称下拉框

function getDropdownOptions() {
    layui.use('form', function () {
        var form = layui.form;
        $.ajax({
            url: "../Warehouse/GetBinLocationNameShow",
            type: "get",
            data: { token: localStorage.getItem("token") },
            success: function (data) {
                var obj = JSON.parse(data);
                console.log(obj)
                var options = '<option value="">请选择</option>'; // 添加默认选项
                $.each(obj.data, function (index, item) {
                    options += '<option value="' + item.binLocationName + '">' + item.binLocationName + '</option>';
                });
                $(".kw").html(options);
                form.render('select'); // 重新渲染下拉框
            },
            error: function () {
                console.log("获取数据失败");
            }
        });
    });
}


layui.use(function () {
    var $ = layui.$;
    var layer = layui.layer;
    var util = layui.util;
    var form = layui.form;
    var table = layui.table;


    // 定义获取选中复选框值的函数
    function getCheckedCheckboxValues() {
        var checkedCheckboxValues = [];
        $("input[name='ckbproc']:checked").each(function () {
            checkedCheckboxValues.push($(this).val());
        });
        return checkedCheckboxValues;
    }

    // 事件
    util.on('lay-on', {
        'test-page-custom': function () {
            layer.open({
                type: 1,
                area: ['900px', '600px'],
                resize: false,
                shadeClose: true,
                title: '选择产品',
                content: `
           <form class="layui-form" action="">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">产品编号:</label>
                <div class="layui-input-block">
                    <input type="text" id="productNos" name="productNo" placeholder="请输入" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">产品名称:</label>
                <div class="layui-input-block">
                    <input type="text" id="productNames" name="productName" placeholder="请输入" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <div class="layui-btn-container">
                    <button type="button" class="layui-btn layui-bg-blue" onclick="Fenye()">
                        <i class="layui-icon layui-icon-search"></i>搜索
                    </button>
                </div>
            </div>
        </div>
    </form>
    <div>
    <table class="layui-table">
    <tr>
        <th>
            <input type="checkbox" id="checkAll" onclick="checkAll()" value="" />
       </th>
        <th>产品编号</th>
        <th>产品名称</th>
        <th>规格</th>
        <th>存储单位</th>
        <th>包装类型</th>
        <th>价格</th>
        <th>重量</th>
        <th>显示名</th>
    </tr>
    <tbody id="data"></tbody>
</table>
    </div>
    <div id="demo-laypage-layout"></div>
    <div style="text-align:right;margin-top:30px">
    <button type="button" class="layui-btn layui-btn-primary layui-btn-sm" id="closePopupBtn" onclick="close()">
                        关闭
                    </button>
    <button type="button" class="layui-btn layui-bg-blue layui-btn-sm" >
                        选择
                    </button>
    </div>

        `,
                success: function () {
                    // 对弹层中的表单进行初始化渲染
                    form.render();
                    // 表单提交事件
                    form.on('submit(demo-login)', function (data) {
                        var field = data.field; // 获取表单字段值
                        return false; // 阻止默认 form 跳转
                    });

                    //获取复选框值
                    var chooseButton = $(".layui-btn.layui-bg-blue:last");
                    chooseButton.on('click', function () {
                        var checkedValues = getCheckedCheckboxValues();
                        if (checkedValues.length > 0) {
                            idsArray = checkedValues
                            console.log("选中的复选框值:", checkedValues, idsArray);
                            layer.close(index);


                            //显示
                            layui.use('table', function () {
                                var form = layui.form;
                                var table = layui.table;
                                $.ajax({
                                    url: '../Warehouse/GetAllocationProductRangeModel', // 后端接口地址，需替换为实际地址
                                    type: 'post',
                                    data: { productId: JSON.stringify(idsArray), token: localStorage.getItem("token") },
                                    success: function (res) {
                                        console.log(res)
                                        var res = JSON.parse(res)
                                        //console.log(res)
                                        //console.log(idsArray)
                                        // res 是从后端获取到的 JSON 数据
                                        if (res.code === 0) {
                                            console.log(res.data);
                                            tidsArray.push(res.data)
                                            console.log(tidsArray);
                                            table.render({
                                                elem: checkupLoad, // 对应 HTML 中表格的 id
                                                data: res.data, // 绑定获取到的数据
                                                //page: true,
                                                //limit: 5,
                                                //limits: [5, 8, 10],
                                                cols: [[
                                                    { type: 'checkbox', fixed: 'left' },
                                                    { field: 'productName', title: '产品名称' },
                                                    { field: 'productNo', title: '产品编号' },
                                                    { field: 'productSpec', title: '规格' },
                                                    { field: 'productBatch', title: '批次' },
                                                    { field: 'productPrice', title: '单价' },
                                                    { field: 'quantity', title: '数量', edit: 'text' },
                                                    { field: 'binLocationName', title: '原库位' },
                                                    {
                                                        field: '', title: '操作', width: 200, templet: function (d) {
                                                            return '<a class="layui-btn layui-btn-edit layui-btn-xs" lay-on="test-page-delete"><i class="layui-icon layui-icon-edit"></i>删除</a> ';
                                                        }
                                                    }
                                                ]]
                                            });

                                        } else {
                                            console.log(res.msg);
                                        }
                                    },
                                    error: function () {
                                        console.log('获取数据失败');
                                    }
                                });
                            });


                        } else {
                            layer.msg("请至少选择一项");
                        }
                    });
                    //关闭弹窗
                    close = function () {
                        layer.close(index);
                    }
                }
            });
            var index = 1;
            var size = 6;
            var tacount = 0;
            $(function () {
                Fenye();
            });
            Show1 = function () {
                var productNo = $("#productNos").val();
                var productName = $("#productNames").val();
                var manuNo = $("#manuNo").val();
                var vendorId = $("#vendorId").val();
                $.ajax({
                    url: '../Product/GEtProductShow',
                    async: false,//改为异步,
                    type: 'get',
                    data: {
                        productNo: productNo,
                        productName: productName,
                        manuNo: manuNo,
                        vendorId: vendorId,
                        index: index,
                        size, size,
                        token: localStorage.getItem("token")
                    },
                    success: function (res) {
                        var list = '';
                        var parsedData = JSON.parse(res);
                        console.log(parsedData)
                        $(parsedData.data.list).each(function () {
                            list += `
                         <tr>
                        <td>
                                <input type="checkbox" name="ckbproc" value="${this.productId}" />
                            </td>
                         <td>${this.productNo}</td>
                          <td>${this.productName}</td>
                          <td>${this.productSpec}</td>
                          <td>${this.productTypeName}</td>
                          <td>${this.productSpec}</td>
                          <td>${this.productWrap}</td>
                          <td>${this.productPrice}</td>
                          <td>${this.productWeight}</td>
                                  <td>
                                     
                                    </td>
                     </tr> `
                        });
                        $("#data").html(list);
                        tacount = parsedData.data.tacount;
                    }
                })
            }

            //分页
            Fenye = function () {

                layui.use(function () {
                    var laypage = layui.laypage;
                    // 完整显示
                    Show1()
                    laypage.render({
                        elem: 'demo-laypage-layout', // 元素 id
                        count: tacount, // 数据总数
                        limit: size,//2.设置默认分页大小
                        limits: [6, 10, 15],//3.设置分页组件可选的分页大小
                        layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'], // 功能布局
                        jump: function (obj) {
                            console.log(obj);
                            index = obj.curr;
                            size = obj.limit;
                            Show1();
                        }
                    });
                });
            }


            checkpll = function () {
                var checkedIds = $("input[name='ckbproc']:checked");//取所有选中的name=ckbproc的复选框集合
                var ids = [];//定义了一个数组,空的
                $(checkedIds).each(function (i, obj) {
                    var id = $(obj).val();
                    ids.push(id);//往数组里push数字,数字就是我们的商品id
                });

                console.log(ids)
            }
            checkAll = function () {

                var checked = $("#checkAll").prop("checked");  //取全选/反选 checkbox的选中状态值
                $("input[name='ckbproc']").prop("checked", checked);//把所有name=ckbproc的checkbox的选中状态赋值为 checked
                console.log(checked)
            }


        }
    })


    //反填
    function fantian() {
        return new Promise((resolve, reject) => {
            // 获取要编辑的用户ID
            const checkId = localStorage.getItem("checkId");
            console.log(checkId);
            if (checkId) {
                // 发送AJAX请求获取数据
                $.ajax({
                    type: "get",
                    url: "/Warehouse/GetFanCheck",
                    data: {
                        checkId: checkId,
                        token: localStorage.getItem("token")
                    },
                    success: (res) => {
                        try {
                            const { data } = JSON.parse(res);
                            console.log(data)
                            if (data) {
                                const { statisticsList } = data;
                                var check = data;
                                console.log(check);
                                console.log(statisticsList);
                                // 反填表单的函数
                                fillForm(check);
                                // 渲染表格的函数
                                renderTable(statisticsList);
                                resolve(check, statisticsList);
                            } else {
                                layui.layer.msg(res.message, { icon: 2 });
                                reject(res.message);
                            }
                        } catch (e) {
                            console.error(e);
                            layui.layer.msg('数据解析失败，请稍后重试', { icon: 2 });
                            reject('数据解析失败');
                        }
                    },
                    error: () => {
                        layui.layer.msg('获取用户信息失败，请稍后重试', { icon: 2 });
                        reject('获取用户信息失败');
                    }
                });
            } else {
                reject('未获取到有效的仓库ID');
            }
        });
    }
    var obj = {
        checkId: 0,
        productId: '',
        auditStatus: '',
        checkType: '',
        office_id: '',
        user_id: '',
        examineReason: '',
        examinePeople: '',
        examineTime: '',
        createName: '',
        createTime: '',
        updateName: '',
        updateTime: '',
        deleteName: '',
        deleteTime: ''
    };
    // 反填表单的函数
    function fillForm(check) {
        $('#checkNo').val(check.checkNo);
        $('#associateNumber').val(check.associateNumber);
        $('#checkMakeHe').val(check.checkMakeHe);
        $('#checkNotes').val(check.checkNotes);
        const date = new Date(check.checkDate);
        const year = date.getFullYear();
        const month = ("0" + (date.getMonth() + 1)).slice(-2);
        const day = ("0" + date.getDate()).slice(-2);
        $('#checkDate').val(year + "-" + month + "-" + day);

        obj.checkId = check.checkId
        obj.productId = check.productId
        obj.auditStatus = check.auditStatus
        obj.checkType = check.checkType
        obj.office_id = check.office_id
        obj.user_id = check.user_id
        obj.examineReason = check.examineReason
        obj.examinePeople = check.examinePeople
        obj.examineTime = check.examineTime
        obj.createName = check.createName
        obj.createTime = check.createTime
        obj.updateName = check.updateName
        obj.updateTime = check.updateTime
        obj.deleteName = check.deleteName
        obj.deleteTime = check.deleteTime
        console.log(obj)
        // 重新渲染表单元素（如果有）
        //form.render();
    }

    // 渲染表格的函数
    function renderTable(statisticsList) {
        console.log(statisticsList);
        var checkId = statisticsList.checkId

        layui.use('table', function () {
            var table = layui.table;
            //查询
            $.ajax({
                type: "get",
                url: "/Warehouse/GetFanCheck",
                data: {
                    checkId: checkId,
                    token: localStorage.getItem("token")
                },
                success: function (res) {
                    var obj = JSON.parse(res);
                    console.log(obj)
                    if (obj.code === 0) {
                        getDropdownOptions()
                        var inst = table.render({
                            elem: '#checkupLoad',//对应HTML中表格的id
                            data: statisticsList,//绑定获取的数据
                            css: [ // 设置单元格样式
                                // 取消默认的溢出隐藏，并设置适当高度
                                '.layui-table-cell{height: 50px; line-height: 40px;}',
                                '.layui-table-cell .layui-colorpicker{width: 38px; height: 38px;}',
                                '.layui-table-cell select{height: 36px; padding: 0 5px;}'
                            ].join(''),
                            cols: [[
                                { type: 'checkbox', fixed: 'left' },
                                { field: 'productName', title: '产品名称' },
                                { field: 'productNo', title: '产品编号' },
                                { field: 'productSpec', title: '规格' },
                                { field: 'statisticsBatch', title: '批次', edit: 'text' },
                                {
                                    field: 'binLocationName', title: '库位', templet: '#TPL-select-demo'
                                },
                                { field: 'storageNum', title: '库存' },
                                { field: 'statisticsSum', title: '盘点数', edit: 'text' },
                                {
                                    field: '', title: '操作', width: 200, templet: function (d) {
                                        return '<a class="layui-btn layui-btn-edit layui-btn-xs" lay-on="test-page-delete"><i class="layui-icon layui-icon-edit"></i>删除</a> ';
                                    }
                                }
                            ]],
                            done: function (res, curr, count) {

                                // 获取当前行数据 - 自定义方法
                                table.getRowData = function (checkupLoad, elem) {
                                    console.log(table.cache.checkupLoad)
                                    var index = $(elem).closest('tr').data('index');
                                    return table.cache.checkupLoad[index] || {};
                                };

                                var showData = function (data) {
                                   
                                };
                                // layui form select 事件
                                form.on('select(select-demo)', function (obj) {
                                    var value = obj.value; // 获取选中项 value
                                    // 获取当前行数据(如 id 等字段，以作为数据修改的索引)
                                    var data = table.getRowData(options.id, obj.elem);
                                    // 更新数据中对应的字段
                                    data.city = value;
                                    // 显示当前行最新数据 - 仅用于示例展示
                                    showData(data);
                                });

                                // 单元格普通编辑事件
                                table.on('edit(ID-table-demo-editmodes)', function (obj) {
                                    var value = obj.value // 得到修改后的值
                                    var data = obj.data // 得到所在行所有键值
                                    var field = obj.field; // 得到字段

                                    // 更新数据中对应的字段
                                    var update = {};
                                    update[field] = value;
                                    obj.update(update);

                                    // 编辑后续操作，如提交更新请求，以完成真实的数据更新
                                    // …
                                    
                                    // 显示当前行最新数据 - 仅用于示例展示
                                    showData(data);
                                });
                            }
                        })

                    } else {
                        console.log(res.msg);
                    }
                },
                error: function () {
                    console.log("获取数据失败");
                }


            });


           
        });
    }
    var options = this;
    


    //文档就绪函数
    $(function () {
        //generateDate();
        fantian();
    })



    //上传盘点结果
    var obj1 = {
        checkId: 0,
        checkNo: "",
        associateNumber: "",
        checkMakeHe: "",
        checkDate: "",
        checkNotes: "",
        productId: 0,
        auditStatus: 0,
        checkType: "",
        office_id: "",
        user_id: 0,
        examineReason: "",
        examinePeople: "",
        examineTime: "",
        statisticsList: []
    };
    layui.use(['layer', 'form', 'util', 'table'], function () {
        var layer = layui.layer;
        var $ = layui.jquery;
        var form = layui.form;
        var util = layui.util;
        var table = layui.table;

        form.on('submit(formSubmit)', function (data) {
            
            var field = data.field;
            var checkStatus = table.checkStatus('checkupLoad');
            console.log(checkStatus)
            field.statisticsList = checkStatus.data.map(function (item) {
                return item;
            });
            console.log(field);//field.products

            obj1.checkId = obj.checkId
            obj1.checkNo = field.checkNo
            obj1.associateNumber = field.associateNumber
            obj1.checkMakeHe = field.checkMakeHe
            obj1.checkDate = field.checkDate
            obj1.checkNotes = field.checkNotes
            obj1.productId = obj.productId
            obj1.auditStatus = obj.auditStatus
            obj1.checkType = obj.checkType
            obj1.office_id = obj.office_id
            obj1.user_id = obj.user_id
            obj1.examineReason = obj.examineReason
            obj1.examinePeople = obj.examinePeople
            obj1.examineTime = obj.examineTime
            obj1.createTime = obj.createTime
            obj1.updateName = obj.updateName
            obj1.deleteName = obj.deleteName
            obj1.deleteTime = obj.deleteTime
            obj1.statisticsList = field.statisticsList
            console.log(obj1)
            //显示填写结果，仅作演示用
            $.ajax({
                url: '/Warehouse/GetUpLoadCheck',
                type: 'post',
                data: {
                    field: obj1,
                    token: localStorage.getItem("token"),
                },
                success: function (res) {
                    var res = JSON.parse(res)
                    console.log(obj1);
                    console.log(res);
                    if (res.code == 0) {
                        layer.alert("上传成功");
                        setTimeout(function () {
                            location.href = '/Warehouse/CheckShow'
                        }, 2000);
                    } else {
                        layer.alert("上传失败");
                    }
                }
            });

            return false; // 阻止默认 form 跳转
        });
    });

});
// 定义时间格式转换函数
function formatTime(timeStamp) {
    if (timeStamp) {
        var date = new Date(timeStamp);
        var year = date.getFullYear();
        var month = ('0' + (date.getMonth() + 1)).slice(-2);
        var day = ('0' + date.getDate()).slice(-2);
        var hour = ('0' + date.getHours()).slice(-2);
        var minute = ('0' + date.getMinutes()).slice(-2);
        var second = ('0' + date.getSeconds()).slice(-2);
        return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
    }
    return "";
}


   

